1 module directx.dcomp; 2 //--------------------------------------------------------------------------- 3 // Copyright (c) Microsoft Corporation. All rights reserved. 4 //--------------------------------------------------------------------------- 5 6 version(Windows): 7 8 version(Direct2D_1_3) 9 version = Direct2D_1_2; 10 version(Direct2D_1_2) 11 version = Direct2D_1_1; 12 version(Direct2D_1_1): 13 version = Direct2D_1_0; 14 15 version(Direct2D_1_0): 16 version(DirectComposition): 17 18 public import directx.com, directx.dcommon; 19 public import directx.dcompanimation; 20 public import directx.d2dbasetypes, directx.d3d9; 21 public import directx.d2d1_1, directx.dcomptypes; 22 23 extern(Windows) 24 { 25 extern(Windows): 26 /// Creates a new DirectComposition device object, which can be used to create 27 /// other DirectComposition objects. 28 HRESULT DCompositionCreateDevice( 29 IDXGIDevice dxgiDevice, 30 REFIID iid, 31 void** dcompositionDevice 32 ); 33 /// Creates a new DirectComposition device object, which can be used to create 34 /// other DirectComposition objects. 35 HRESULT DCompositionCreateDevice2( 36 IUnknown renderingDevice, 37 REFIID iid, 38 void** dcompositionDevice 39 ); 40 /// Creates a new DirectComposition device object, which can be used to create 41 /// other DirectComposition objects. 42 HRESULT DCompositionCreateDevice3( 43 IUnknown renderingDevice, 44 REFIID iid, 45 void** dcompositionDevice 46 ); 47 /// Creates a new composition surface object, which can be bound to a 48 /// DirectX swap chain or swap buffer or to a GDI bitmap and associated 49 /// with a visual. 50 HRESULT DCompositionCreateSurfaceHandle( 51 DWORD desiredAccess, 52 SECURITY_ATTRIBUTES* securityAttributes, 53 HANDLE* surfaceHandle 54 ); 55 /// Creates an Interaction/InputSink to route mouse wheel messages to the 56 /// given HWND. After calling this API, the device owning the visual must 57 /// be committed. 58 HRESULT DCompositionAttachMouseWheelToHwnd( 59 IDCompositionVisual visual, 60 HWND hwnd, 61 BOOL enable 62 ); 63 /// Creates an Interaction/InputSink to route mouse button down and any 64 /// subsequent move and up events to the given HWND. There is no move 65 /// thresholding; when enabled, all events including and following the down 66 /// are unconditionally redirected to the specified window. After calling this 67 /// API, the device owning the visual must be committed. 68 HRESULT DCompositionAttachMouseDragToHwnd( 69 IDCompositionVisual visual, 70 HWND hwnd, 71 BOOL enable 72 ); 73 } 74 75 mixin(uuid!(IDCompositionDevice, "C37EA93A-E7AA-450D-B16F-9746CB0407F3")); 76 /// Serves as the root factory for all other DirectComposition objects and 77 /// controls transactional composition. 78 interface IDCompositionDevice : IUnknown 79 { 80 extern(Windows): 81 /// Commits all DirectComposition commands pending on this device. 82 HRESULT Commit(); 83 /// Waits for the last Commit to be processed by the composition engine 84 HRESULT WaitForCommitCompletion(); 85 /// Gets timing information about the composition engine. 86 HRESULT GetFrameStatistics(DCOMPOSITION_FRAME_STATISTICS* statistics); 87 /// Creates a composition target bound to a window represented by an HWND. 88 HRESULT CreateTargetForHwnd( 89 HWND hwnd, 90 BOOL topmost, 91 IDCompositionTarget* target 92 ); 93 /// Creates a new visual object. 94 HRESULT CreateVisual(IDCompositionVisual* visual); 95 /// Creates a DirectComposition surface object 96 HRESULT CraeteSurface( 97 UINT width, 98 UINT height, 99 DXGI_FORMAT pixelFormat, 100 DXGI_ALPHA_MODE alphaMode, 101 IDCompositionSurface* surface 102 ); 103 /// Creates a DirectComposition virtual surface object 104 HRESULT CreateVirtualSurface( 105 UINT initialWidth, 106 UINT initialHeight, 107 DXGI_FORMAT pixelFormat, 108 DXGI_ALPHA_MODE alphaMode, 109 IDCompositionVirtualSurface* virtualSurface 110 ); 111 /// Creates a surface wrapper around a pre-existing surface that can be associated with one or more visuals for composition. 112 HRESULT CreateSurfaceForHandle( 113 HANDLE handle, 114 IUnknown* surface 115 ); 116 /// Creates a wrapper object that represents the rasterization of a layered window and which can be associated with a visual for composition. 117 HRESULT CreateSurfaceForHwnd( 118 HWND hwnd, 119 IUnknown* surface 120 ); 121 /// Creates a 2D translation transform object. 122 HRESULT CreateTranslateTransform(IDCompositionTranslateTransform* translateTransform); 123 /// Creates a 2D scale transform object. 124 HRESULT CreateScaleTransform(IDCompositionScaleTransform* scaleTransform); 125 /// Creates a 2D rotation transform object. 126 HRESULT CreateRotateTransform(IDCompositionRotateTransform* rotateTransform); 127 /// Creates a 2D skew transform object. 128 HRESULT CreateSkewTransform(IDCompositionSkewTransform* skewTransform); 129 /// Creates a 2D 3x2 matrix transform object. 130 HRESULT CreateMatrixTransform(IDCompositionMatrixTransform* matrixTransform); 131 /// Creates a 2D transform object that holds an array of 2D transform objects. 132 HRESULT CreateTransformGroup( 133 IDCompositionTransform* transforms, UINT elements, 134 IDCompositionTransform* transformGroup 135 ); 136 /// Creates a 3D translation transform object. 137 HRESULT CreateTranslateTransform3D(IDCompositionTranslateTransform3D* translateTransform3D); 138 /// Creates a 3D scale transform object. 139 HRESULT CreateScaleTransform3D(IDCompositionScaleTransform3D* scaleTransform3D); 140 /// Creates a 3D rotation transform object. 141 HRESULT CreateRotateTransform3D(IDCompositionRotateTransform3D* rotateTransform3D); 142 /// Creates a 3D 4x4 matrix transform object. 143 HRESULT CreateMatrixTransform3D(IDCompositionMatrixTransform3D* matrixTransform3D); 144 /// Creates a 3D transform object that holds an array of 3D transform objects. 145 HRESULT CreateTransform3DGroup( 146 IDCompositionTransform3D* transform3D, UINT elements, 147 IDCompositionTransform3D* transform3DGroup 148 ); 149 /// Creates an effect group 150 HRESULT CreateEffectrGroup(IDCompositionEffectGroup* effectGroup); 151 /// Creates a clip object that can be used to clip the contents of a visual subtree. 152 HRESULT CreateRectangleClip(IDCompositionRectangleClip* clip); 153 /// Creates an animation object 154 HRESULT CreateAnimation(IDCompositionAnimation animation); 155 /// Returns the states of the app's DX device and DWM's dx devices 156 HRESULT CheckDeviceState(BOOL* pfValid); 157 } 158 159 mixin(uuid!(IDCompositionTarget, "eacdd04c-117e-4e17-88f4-d1b12b0e3d89")); 160 /// An IDCompositionTarget interface represents a binding between a 161 /// DirectComposition visual tree and a destination on top of which the 162 /// visual tree should be composed. 163 interface IDCompositionTarget : IUnknown 164 { 165 extern(Windows): 166 /// Sets the root visual 167 HRESULT SetRoot(IDCompositionVisual visual); 168 } 169 170 mixin(uuid!(IDCompositionVisual, "4d93059d-097b-4651-9a60-f0f25116e2f3")); 171 /// An IDCompositionVisual interface represents a visual that participates in 172 /// a visual tree. 173 interface IDCompositionVisual : IUnknown 174 { 175 extern(Windows): 176 /// Changes the value of OffsetX property 177 HRESULT SetOffsetX(float offsetX); 178 /// Animates the value of the OffsetX property. 179 HRESULT SetOffsetX(IDCompositionAnimation animation); 180 /// Changes the value of OffsetY property 181 HRESULT SetOffsetY(float offsetY); 182 /// Animates the value of the OffsetY property. 183 HRESULT SetOffsetY(IDCompositionAnimation animation); 184 /// Sets the matrix that modifies the coordinate system of this visual. 185 HRESULT SetTransform(const(D2D_MATRIX_3X2_F)* matrix); 186 /// Sets the transformation object that modifies the coordinate system of this visual. 187 HRESULT SetTransform(IDCompositionTransform transform); 188 /// Sets the visual that should act as this visual's parent for the 189 /// purpose of establishing a base coordinate system. 190 HRESULT SetTransformParent(IDCompositionVisual visual); 191 /// Sets the effect object that is applied during the rendering of this visual 192 HRESULT SetEffect(IDCompositionEffect effect); 193 /// Sets the mode to use when interpolating pixels from bitmaps drawn not 194 /// exactly at scale and axis-aligned. 195 HRESULT SetBitmapInterpolationMode(DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolationMode); 196 /// Sets the mode to use when drawing the edge of bitmaps that are not 197 /// exactly axis-aligned and at precise pixel boundaries. 198 HRESULT SetBorderMode(DCOMPOSITION_BORDER_MODE borderMode); 199 /// Sets the clip object that restricts the rendering of this visual to a D2D rectangle. 200 HRESULT SetClip(const(D2D_RECT_F)* rect); 201 /// Sets the clip object that restricts the rendering of this visual to a rectangle. 202 HRESULT SetClip(IDCompositionClip clip); 203 /// Associates a bitmap with a visual 204 HRESULT SetContent(IUnknown content); 205 /// Adds a visual to the children list of another visual. 206 HRESULT AddVisual( 207 IDCompositionVisual visual, 208 BOOL insertAbove, 209 IDCompositionVisual referenceVisual 210 ); 211 /// Removes a visual from the children list of another visual. 212 HRESULT RemoveVisual(IDCompositionVisual visual); 213 /// Removes all visuals from the children list of another visual. 214 HRESULT RemoveAllVisuals(); 215 /// Sets the mode to use when composing the bitmap against the render target. 216 HRESULT SetCompositeMode(DCOMPOSITION_COMPOSITE_MODE compositeMode); 217 } 218 219 mixin(uuid!(IDCompositionEffect, "EC81B08F-BFCB-4e8d-B193-A915587999E8")); 220 /// An IDCompositionEffect interface represents an effect 221 interface IDCompositionEffect : IUnknown {} 222 mixin(uuid!(IDCompositionTransform3D, "71185722-246B-41f2-AAD1-0443F7F4BFC2")); 223 /// An IDCompositionTransform3D interface represents a 3D transformation. 224 interface IDCompositionTransform3D : IDCompositionEffect {} 225 mixin(uuid!(IDCompositionTransform, "FD55FAA7-37E0-4c20-95D2-9BE45BC33F55")); 226 /// An IDCompositionTransform interface represents a 2D transformation that 227 /// can be used to modify the coordinate space of a visual subtree. 228 interface IDCompositionTransform : IDCompositionTransform3D {} 229 mixin(uuid!(IDCompositionTranslateTransform, "06791122-C6F0-417d-8323-269E987F5954")); 230 /// An IDCompositionTranslateTransform interface represents a 2D transformation 231 /// that affects only the offset of a visual along the x and y axes. 232 interface IDCompositionTranslateTransform : IDCompositionTransform 233 { 234 extern(Windows): 235 /// Changes the value of the OffsetX property. 236 HRESULT SetOffsetX(float offsetX); 237 /// Animates the value of the OffsetX property. 238 HRESULT SetOffsetX(IDCompositionAnimation animation); 239 /// Changes the value of the OffsetY property. 240 HRESULT SetOffsetY(float offsetY); 241 /// Animates the value of the OffsetY property. 242 HRESULT SetOffsetY(IDCompositionAnimation animation); 243 } 244 245 mixin(uuid!(IDCompositionScaleTransform, "71FDE914-40EF-45ef-BD51-68B037C339F9")); 246 /// An IDCompositionScaleTransform interface represents a 2D transformation that 247 /// affects the scale of a visual along the x and y axes. The coordinate system 248 /// is scaled from the specified center point. 249 interface IDCompositionScaleTransform : IDCompositionTransform 250 { 251 extern(Windows): 252 /// Changes the value of the ScaleX property. 253 HRESULT SetScaleX(float scaleX); 254 /// Animates the value of the ScaleX property. 255 HRESULT SetScaleX(IDCompositionAnimation animation); 256 /// Changes the value of the ScaleY property. 257 HRESULT SetScaleY(float scaleY); 258 /// Animates the value of the ScaleY property. 259 HRESULT SetScaleY(IDCompositionAnimation animation); 260 /// Changes the value of the CenterX property. 261 HRESULT SetCenterX(float centerX); 262 /// Animates the value of the CenterX property. 263 HRESULT SetCenterX(IDCompositionAnimation animation); 264 /// Changes the value of the CenterY property. 265 HRESULT SetCenterY(float centerY); 266 /// Animates the value of the CenterY property. 267 HRESULT SetCenterY(IDCompositionAnimation animation); 268 } 269 270 mixin(uuid!(IDCompositionRotateTransform, "641ED83C-AE96-46c5-90DC-32774CC5C6D5")); 271 /// An IDCompositionRotateTransform interface represents a 2D transformation 272 /// that affects the rotation of a visual along the z axis. The coordinate system 273 /// is rotated around the specified center point. 274 interface IDCompositionRotateTransform : IDCompositionTransform 275 { 276 extern(Windows): 277 /// Changes the value of the Angle property. 278 HRESULT SetAngle(float angle); 279 /// Animates the value of the Angle property. 280 HRESULT SetAngle(IDCompositionAnimation animation); 281 /// Changes the value of the CenterX property. 282 HRESULT SetCenterX(float centerX); 283 /// Animates the value of the CenterX property. 284 HRESULT SetCenterX(IDCompositionAnimation animation); 285 /// Changes the value of the CenterY property. 286 HRESULT SetCenterY(float centerY); 287 /// Animates the value of the CenterY property. 288 HRESULT SetCenterY(IDCompositionAnimation animation); 289 } 290 291 mixin(uuid!(IDCompositionSkewTransform, "E57AA735-DCDB-4c72-9C61-0591F58889EE")); 292 /// An IDCompositionSkewTransform interface represents a 2D transformation that 293 /// affects the skew of a visual along the x and y axes. The coordinate system 294 /// is skewed around the specified center point. 295 interface IDCompositionSkewTransform : IDCompositionTransform 296 { 297 extern(Windows): 298 /// Changes the value of the AngleX property. 299 HRESULT SetAngleX(float angleX); 300 /// Animates the value of the AngleX property. 301 HRESULT SetAngleX(IDCompositionAnimation animation); 302 /// Changes the value of the AngleY property. 303 HRESULT SetAngleY(float angleY); 304 /// Animates the value of the AngleY property. 305 HRESULT SetAngleY(IDCompositionAnimation animation); 306 /// Changes the value of the CenterX property. 307 HRESULT SetCenterX(float centerX); 308 /// Animates the value of the CenterX property. 309 HRESULT SetCenterX(IDCompositionAnimation animation); 310 /// Changes the value of the CenterY property. 311 HRESULT SetCenterY(float centerY); 312 /// Animates the value of the CenterY property. 313 HRESULT SetCenterY(IDCompositionAnimation animation); 314 } 315 316 mixin(uuid!(IDCompositionMatrixTransform, "16CDFF07-C503-419c-83F2-0965C7AF1FA6")); 317 /// An IDCompositionMatrixTransform interface represents an arbitrary affine 318 /// 2D transformation defined by a 3x2 matrix. 319 interface IDCompositionMatrixTransform : IDCompositionTransform 320 { 321 extern(Windows): 322 /// Changes all values of the matrix of this transform. 323 HRESULT SetMatrix(const(D2D_MATRIX_3X2_F)* matrix); 324 /// Changes a single element of the matrix of this transform. 325 HRESULT SetMatrixElement(int row, int column, float value); 326 /// Animates a single element of the matrix of this transform. 327 HRESULT SetMatrixElement(int row, int column, IDCompositionAnimation animation); 328 } 329 330 mixin(uuid!(IDCompositionEffectGroup, "A7929A74-E6B2-4bd6-8B95-4040119CA34D")); 331 /// An IDCompositionEffectGroup holds effects, inluding 3D transforms that can 332 /// be applied to a visual. 333 interface IDCompositionEffectGroup : IDCompositionEffect 334 { 335 extern(Windows): 336 /// Changes the opacity property. 337 HRESULT SetOpacity(float opacity); 338 /// Animates the opacity property 339 HRESULT SetOpacity(IDCompositionAnimation animation); 340 /// Sets the 3D transform 341 HRESULT SetTransform3D(IDCompositionTransform3D transform3D); 342 } 343 344 mixin(uuid!(IDCompositionTranslateTransform3D, "91636D4B-9BA1-4532-AAF7-E3344994D788")); 345 /// An IDCompositionTranslateTransform3D interface represents a 3D transformation 346 /// that affects the offset of a visual along the x,y and z axes. 347 interface IDCompositionTranslateTransform3D : IDCompositionTransform3D 348 { 349 extern(Windows): 350 /// Changes the value of the OffsetX property. 351 HRESULT SetOffsetX(float offsetX); 352 /// Animates the value of the OffsetX property. 353 HRESULT SetOffsetX(IDCompositionAnimation animation); 354 /// Changes the value of the OffsetY property. 355 HRESULT SetOffsetY(float offsetY); 356 /// Animates the value of the OffsetY property. 357 HRESULT SetOffsetY(IDCompositionAnimation animation); 358 /// Changes the value of the OffsetZ property. 359 HRESULT SetOffsetZ(float offsetZ); 360 /// Animates the value of the OffsetZ property. 361 HRESULT SetOffsetZ(IDCompositionAnimation animation); 362 } 363 364 mixin(uuid!(IDCompositionScaleTransform3D, "2A9E9EAD-364B-4b15-A7C4-A1997F78B389")); 365 /// An IDCompositionScaleTransform3D interface represents a 3D transformation that 366 /// affects the scale of a visual along the x, y and z axes. The coordinate system 367 /// is scaled from the specified center point. 368 interface IDCompositionScaleTransform3D : IDCompositionTransform3D 369 { 370 extern(Windows): 371 /// Changes the value of the ScaleX property. 372 HRESULT SetScaleX(float scaleX); 373 /// Animates the value of the ScaleX property. 374 HRESULT SetScaleX(IDCompositionAnimation animation); 375 /// Changes the value of the ScaleY property. 376 HRESULT SetScaleY(float scaleY); 377 /// Animates the value of the ScaleY property. 378 HRESULT SetScaleY(IDCompositionAnimation animation); 379 /// Changes the value of the ScaleZ property. 380 HRESULT SetScaleZ(float scaleZ); 381 /// Animates the value of the ScaleZ property. 382 HRESULT SetScaleZ(IDCompositionAnimation animation); 383 /// Changes the value of the CenterX property. 384 HRESULT SetCenterX(float centerX); 385 /// Animates the value of the CenterX property. 386 HRESULT SetCenterX(IDCompositionAnimation animation); 387 /// Changes the value of the CenterY property. 388 HRESULT SetCenterY(float centerY); 389 /// Animates the value of the CenterY property. 390 HRESULT SetCenterY(IDCompositionAnimation animation); 391 /// Changes the value of the CenterZ property. 392 HRESULT SetCenterZ(float centerZ); 393 /// Animates the value of the CenterZ property. 394 HRESULT SetCenterZ(IDCompositionAnimation animation); 395 } 396 397 mixin(uuid!(IDCompositionRotateTransform3D, "D8F5B23F-D429-4a91-B55A-D2F45FD75B18")); 398 /// An IDCompositionRotateTransform3D interface represents a 3D transformation 399 /// that affects the rotation of a visual along the specified axis at the 400 /// specified center point. 401 interface IDCompositionRotateTransform3D : IDCompositionTransform3D 402 { 403 extern(Windows): 404 /// Changes the value of the Angle property. 405 HRESULT SetAngle(float angle); 406 /// Animates the value of the Angle property. 407 HRESULT SetAngle(IDCompositionAnimation animation); 408 /// Changes the value of the AxisX property. 409 HRESULT SetAxisX(float axisX); 410 /// Animates the value of the AxisX property. 411 HRESULT SetAxisX(IDCompositionAnimation animation); 412 /// Changes the value of the AxisY property. 413 HRESULT SetAxisY(float axisY); 414 /// Animates the value of the AxisY property. 415 HRESULT SetAxisY(IDCompositionAnimation animation); 416 /// Changes the value of the AxisZ property. 417 HRESULT SetAxisZ(float axisZ); 418 /// Animates the value of the AxisZ property. 419 HRESULT SetAxisZ(IDCompositionAnimation animation); 420 /// Changes the value of the CenterX property. 421 HRESULT SetCenterX(float centerX); 422 /// Animates the value of the CenterX property. 423 HRESULT SetCenterX(IDCompositionAnimation animation); 424 /// Changes the value of the CenterY property. 425 HRESULT SetCenterY(float centerY); 426 /// Animates the value of the CenterY property. 427 HRESULT SetCenterY(IDCompositionAnimation animation); 428 /// Changes the value of the CenterZ property. 429 HRESULT SetCenterZ(float centerZ); 430 /// Animates the value of the CenterZ property. 431 HRESULT SetCenterZ(IDCompositionAnimation animation); 432 } 433 434 mixin(uuid!(IDCompositionMatrixTransform3D, "4B3363F0-643B-41b7-B6E0-CCF22D34467C")); 435 /// An IDCompositionMatrixTransform3D interface represents an arbitrary 436 /// 3D transformation defined by a 4x4 matrix. 437 interface IDCompositionMatrixTransform3D : IDCompositionTransform3D 438 { 439 extern(Windows): 440 /// Changes all values of the matrix of this transform. 441 HRESULT SetMatrix(const(D3DMATRIX)* matrix); 442 /// Changes a single element of the matrix of this transform. 443 HRESULT SetMatrixElement(int row, int column, float value); 444 /// Animates a single element of the matrix of this transform. 445 HRESULT SetMatrixElement(int row, int column, IDCompositionAnimation animation); 446 } 447 mixin(uuid!(IDCompositionClip, "64AC3703-9D3F-45ec-A109-7CAC0E7A13A7")); 448 /// An IDCompositionClip interface represents a rectangle that restricts the 449 /// rasterization of a visual subtree. 450 interface IDCompositionClip : IUnknown {} 451 mixin(uuid!(IDCompositionRectangleClip, "9842AD7D-D9CF-4908-AED7-48B51DA5E7C2")); 452 /// An IDCompositionRectangleClip interface represents a rectangle that restricts 453 /// the rasterization of a visual subtree. 454 interface IDCompositionRectangleClip : IDCompositionClip 455 { 456 extern(Windows): 457 /// Changes the value of the Left property. 458 HRESULT SetLeft(float left); 459 /// Animates the value of the Left property. 460 HRESULT SetLeft(IDCompositionAnimation animation); 461 /// Changes the value of the Top property. 462 HRESULT SetTop(float top); 463 /// Animates the value of the Top property. 464 HRESULT SetTop(IDCompositionAnimation animation); 465 /// Changes the value of the Right property. 466 HRESULT SetRight(float right); 467 /// Animates the value of the Right property. 468 HRESULT SetRight(IDCompositionAnimation animation); 469 /// Changes the value of the Bottom property. 470 HRESULT SetBottom(float bottom); 471 /// Animates the value of the Bottom property. 472 HRESULT SetBottom(IDCompositionAnimation animation); 473 /// Changes the value of the x radius of the ellipse that rounds the 474 /// top-left corner of the clip. 475 HRESULT SetTopLeftRadiusX(float radius); 476 /// Animates the value of the x radius of the ellipse that rounds the 477 /// top-left corner of the clip. 478 HRESULT SetTopLeftRadiusX(IDCompositionAnimation animation); 479 /// Changes the value of the y radius of the ellipse that rounds the 480 /// top-left corner of the clip. 481 HRESULT SetTopLeftRadiusY(float radius); 482 /// Animates the value of the y radius of the ellipse that rounds the 483 /// top-left corner of the clip. 484 HRESULT SetTopLeftRadiusY(IDCompositionAnimation animation); 485 /// Changes the value of the x radius of the ellipse that rounds the 486 /// top-right corner of the clip. 487 HRESULT SetTopRightRadiusX(float radius); 488 /// Animates the value of the x radius of the ellipse that rounds the 489 /// top-right corner of the clip. 490 HRESULT SetTopRightRadiusX(IDCompositionAnimation animation); 491 /// Changes the value of the y radius of the ellipse that rounds the 492 /// top-right corner of the clip. 493 HRESULT SetTopRightRadiusY(float radius); 494 /// Animates the value of the y radius of the ellipse that rounds the 495 /// top-right corner of the clip. 496 HRESULT SettopRightRadiusY(IDCompositionAnimation animation); 497 /// Changes the value of the x radius of the ellipse that rounds the 498 /// bottom-left corner of the clip. 499 HRESULT SetBottomLeftRadiusX(float radius); 500 /// Animates the value of the x radius of the ellipse that rounds the 501 /// bottom-left corner of the clip. 502 HRESULT SetBottomLeftRadiusX(IDCompositionAnimation animation); 503 /// Changes the value of the y radius of the ellipse that rounds the 504 /// bottom-left corner of the clip. 505 HRESULT SetBottomLeftRadiusY(float radius); 506 /// Animates the value of the y radius of the ellipse that rounds the 507 /// bottom-left corner of the clip. 508 HRESULT SetBottomLeftRadiusY(IDCompositionAnimation animation); 509 /// Changes the value of the x radius of the ellipse that rounds the 510 /// bottom-right corner of the clip. 511 HRESULT SetBottomRightRadiusX(float radius); 512 /// Animates the value of the x radius of the ellipse that rounds the 513 /// bottom-right corner of the clip. 514 HRESULT SetBottomRightRadiusX(IDCompositionAnimation animation); 515 /// Changes the value of the y radius of the ellipse that rounds the 516 /// bottom-right corner of the clip. 517 HRESULT SetBottomRightRadiusY(float radius); 518 /// Animates the value of the y radius of the ellipse that rounds the 519 /// bottom-right corner of the clip. 520 HRESULT SetBottomRightRadiusY(IDCompositionAnimation animation); 521 } 522 523 mixin(uuid!(IDCompositionSurface, "BB8A4953-2C99-4F5A-96F5-4819027FA3AC")); 524 /// An IDCompositionSurface interface represents a wrapper around a DirectX 525 /// object, or a sub-rectangle of one of those objects. 526 interface IDCompositionSurface : IUnknown 527 { 528 extern(Windows): 529 HRESULT BeginDraw(const(RECT)* updateRect, REFIID iid, void** updateObject, POINT* updateOffset); 530 HRESULT EndDraw(); 531 HRESULT SuspendDraw(); 532 HRESULT ResumeDraw(); 533 HRESULT Scroll( 534 const(RECT)* scrollRect, 535 const(RECT)* clipRect, 536 int offsetX, 537 int offsetY); 538 } 539 mixin(uuid!(IDCompositionVirtualSurface, "AE471C51-5F53-4A24-8D3E-D0C39C30B3F0")); 540 /// An IDCompositionVirtualSurface interface represents a sparsely 541 /// allocated surface. 542 interface IDCompositionVirtualSurface : IDCompositionSurface 543 { 544 extern(Windows): 545 HRESULT Resize(UINT width, UINT height); 546 HRESULT Trim(const(RECT)* rectangles, UINT count); 547 } 548 549 mixin(uuid!(IDCompositionDevice2, "75F6468D-1B8E-447C-9BC6-75FEA80B5B25")); 550 /// Serves as the root factory for all other DirectComposition2 objects and 551 /// controls transactional composition. 552 interface IDCompositionDevice2 : IUnknown 553 { 554 extern(Windows): 555 /// Commits all DirectComposition commands pending on this device. 556 HRESULT Commit(); 557 /// Waits for the last Commit to be processed by the composition engine 558 HRESULT WaitForCommitCompletion(); 559 /// Gets timing information about the composition engine. 560 HRESULT GetFrameStatistics(DCOMPOSITION_FRAME_STATISTICS* statistics); 561 /// Creates a new visual object. 562 HRESULT CreateVisual(IDCompositionVisual2* visual); 563 /// Creates a factory for surface objects 564 HRESULT CreateSurfaceFactory(IUnknown renderingDevice, IDCompositionSurfaceFactory* surfaceFactory); 565 /// Creates a DirectComposition surface object 566 HRESULT CreateSurface( 567 UINT width, 568 UINT height, 569 DXGI_FORMAT pixelFormat, 570 DXGI_ALPHA_MODE alphaMode, 571 IDCompositionSurface* surface); 572 /// Creates a DirectComposition virtual surface object 573 HRESULT CreateVirtualSurface( 574 UINT initialWidth, 575 UINT initialHeight, 576 DXGI_FORMAT pixelFormat, 577 DXGI_ALPHA_MODE alphaMode, 578 IDCompositionVirtualSurface* virtualSurface); 579 /// Creates a 2D translation transform object. 580 HRESULT CreateTranslateTransform(IDCompositionTranslateTransform* translateTransform); 581 /// Creates a 2D scale transform object. 582 HRESULT CreateScaleTransform(IDCompositionScaleTransform* scaleTransform); 583 /// Creates a 2D rotation transform object. 584 HRESULT CreateRotateTransform(IDCompositionRotateTransform* rotateTransform); 585 /// Creates a 2D skew transform object. 586 HRESULT CreateSkewTransform(IDCompositionSkewTransform* skewTransform); 587 /// Creates a 2D 3x2 matrix transform object. 588 HRESULT CreateMatrixTransform(IDCompositionMatrixTransform* matrixTransform); 589 /// Creates a 2D transform object that holds an array of 2D transform objects. 590 HRESULT CreateTransformGroup( 591 IDCompositionTransform* transforms, UINT elements, 592 IDCompositionTransform* transformGroup); 593 /// Creates a 3D translation transform object. 594 HRESULT CreateTranslateTransform3D(IDCompositionTranslateTransform3D* translateTransform3D); 595 /// Creates a 3D scale transform object. 596 HRESULT CreateScaleTransform3D(IDCompositionScaleTransform3D* scaleTransform3D); 597 /// Creates a 3D rotation transform object. 598 HRESULT CreateRotateTransform3D(IDCompositionRotateTransform3D* rotateTransfrom3D); 599 /// Creates a 3D 4x4 matrix transform object. 600 HRESULT CreateMatrixTransform3D(IDCompositionMatrixTransform3D* matrixTransform3D); 601 /// Creates a 3D transform object that holds an array of 3D transform objects. 602 HRESULT CreateTransform3DGroup( 603 IDCompositionTransform3D* transforms3D, UINT elements, 604 IDCompositionTransform3D* transform3DGroup); 605 /// Creates an effect group 606 HRESULT CreateEffectGroup(IDCompositionEffectGroup* effectGroup); 607 /// Creates a clip object that can be used to clip the contents of a visual subtree. 608 HRESULT CreateRectangleClip(IDCompositionRectangleClip* clip); 609 /// Creates an animation object 610 HRESULT CreateAnimation(IDCompositionAnimation animation); 611 } 612 613 mixin(uuid!(IDCompositionDesktopDevice, "5F4633FE-1E08-4CB8-8C75-CE24333F5602")); 614 /// Serves as the root factory for all other desktop DirectComposition 615 /// objects. 616 interface IDCompositionDesktopDevice : IDCompositionDevice2 617 { 618 extern(Windows): 619 HRESULT CreateTargetForHwnd(HWND hwnd, BOOL topmost, IDCompositionTarget* target); 620 /// Creates a surface wrapper around a pre-existing surface that can be associated with one or more visuals for composition. 621 HRESULT CreateSurfaceFromHandle(HANDLE handle, IUnknown* surface); 622 /// Creates a wrapper object that represents the rasterization of a layered window and which can be associated with a visual for composition. 623 HRESULT CreateSurfaceFromHwnd(HWND hwnd, IUnknown* surface); 624 } 625 626 mixin(uuid!(IDCompositionDeviceDebug, "A1A3C64A-224F-4A81-9773-4F03A89D3C6C")); 627 /// IDCompositionDeviceDebug serves as a debug interface 628 interface IDCompositionDeviceDebug : IUnknown 629 { 630 extern(Windows): 631 /// Enables debug counters 632 HRESULT EnableDebugCounters(); 633 /// Enables debug counters 634 HRESULT DisableDebugCounters(); 635 } 636 637 mixin(uuid!(IDCompositionSurfaceFactory, "E334BC12-3937-4E02-85EB-FCF4EB30D2C8")); 638 /// An IDCompositionSurfaceFactory interface represents an object that can 639 /// create surfaces suitable for composition. 640 interface IDCompositionSurfaceFactory : IUnknown 641 { 642 extern(Windows): 643 /// Creates a DirectComposition surface object 644 HRESULT CreateSurface( 645 UINT width, 646 UINT height, 647 DXGI_FORMAT pixelFormat, 648 DXGI_ALPHA_MODE alphaMode, 649 IDCompositionSurface* surface); 650 /// Creates a DirectComposition virtual surface object 651 HRESULT CreateVirtualSurface( 652 UINT initialWidth, 653 UINT initialHeight, 654 DXGI_FORMAT pixelFormat, 655 DXGI_ALPHA_MODE alphaMode, 656 IDCompositionVirtualSurface* virtualSurface); 657 } 658 659 mixin(uuid!(IDCompositionVisual2, "E8DE1639-4331-4B26-BC5F-6A321D347A85")); 660 /// An IDCompositionVisual2 interface represents a visual that participates in 661 /// a visual tree. 662 interface IDCompositionVisual2 : IDCompositionVisual 663 { 664 extern(Windows): 665 /// Changes the interpretation of the opacity property of an effect group 666 /// associated with this visual 667 HRESULT SetOpacityMode(DCOMPOSITION_OPACITY_MODE mode); 668 /// Sets back face visibility 669 HRESULT SetBackFaceVisibility(DCOMPOSITION_BACKFACE_VISIBILITY visibility); 670 } 671 672 mixin(uuid!(IDCompositionVisualDebug, "FED2B808-5EB4-43A0-AEA3-35F65280F91B")); 673 /// An IDCompositionVisualDebug interface represents a debug visual 674 interface IDCompositionVisualDebug : IDCompositionVisual2 675 { 676 extern(Windows): 677 /// Enable heat map 678 HRESULT EnableHeatMap(const(D2D1_COLOR_F)* color); 679 /// Disable heat map 680 HRESULT DisableHeatMap(); 681 /// Enable redraw regions 682 HRESULT EnableRedrawRegions(); 683 /// Disable redraw regions 684 HRESULT DisableRedrawRegions(); 685 } 686 687 mixin(uuid!(IDCompositionVisual3, "2775F462-B6C1-4015-B0BE-B3E7D6A4976D")); 688 /// An IDCompositionVisual3 interface represents a visual that participates in 689 /// a visual tree. 690 interface IDCompositionVisual3 : IDCompositionVisualDebug 691 { 692 extern(Windows): 693 /// Sets depth mode property associated with this visual 694 HRESULT SetDepthMode(DCOMPOSITION_DEPTH_MODE mode); 695 /// Changes the value of OffsetZ property. 696 HRESULT SetOffsetZ(float offsetZ); 697 /// Animates the value of the OffsetZ property. 698 HRESULT SetOffsetZ(IDCompositionAnimation animation); 699 /// Changes the value of the Opacity property. 700 HRESULT SetOpacity(float opacity); 701 /// Animates the value of the Opacity property. 702 HRESULT SetOpacity(IDCompositionAnimation animation); 703 /// Sets the matrix that modifies the coordinate system of this visual. 704 HRESULT SetTransform(const(D2D_MATRIX_4X4_F)* matrix); 705 /// Sets the transformation object that modifies the coordinate system of this visual. 706 HRESULT SetTransform(IDCompositionTransform3D transform); 707 /// Changes the value of the Visible property 708 HRESULT SetVisible(BOOL visible); 709 } 710 711 mixin(uuid!(IDCompositionDevice3, "0987CB06-F916-48BF-8D35-CE7641781BD9")); 712 /// Serves as the root factory for all other DirectComposition3 objects and 713 /// controls transactional composition. 714 interface IDCompositionDevice3 : IDCompositionDevice2 715 { 716 extern(Windows): 717 /// Effect creation calls, each creates an interface around a D2D1Effect 718 HRESULT CreateGaussianBlurEffect(IDCompositionGaussianBlurEffect* gaussianBlurEffect); 719 HRESULT CreateBrightnessEffect(IDCompositionBrightnessEffect* brightnessEffect); 720 HRESULT CreateColorMatrixEffect(IDCompositionColorMatrixEffect* colorMatrixEffect); 721 HRESULT CreateShadowEffect(IDCompositionShadowEffect* shadowEffect); 722 HRESULT CreateHueRotationEffect(IDCompositionHueRotationEffect* hueRotationEffect); 723 HRESULT CreateSaturationEffect(IDCompositionSaturationEffect* saturationEffect); 724 HRESULT CreateTurbulenceEffect(IDCompositionTurbulenceEffect* turbulenceEffect); 725 HRESULT CreateLinearTransferEffect(IDCompositionLinearTransferEffect* linearTransferEffect); 726 HRESULT CreateTableTransferEffect(IDCompositionTableTransferEffect* tableTransferEffect); 727 HRESULT CreateCompositeEffect(IDCompositionCompositeEffect* compositeEffect); 728 HRESULT CreateBlendEffect(IDCompositionBlendEffect* blendEffect); 729 HRESULT CreateArithmeticCompositeEffect(IDCompositionArithmeticCompositeEffect* arithmeticCompositeEffect); 730 HRESULT CreateAffineTransform2DEffect(IDCompositionAffineTransform2DEffect* affineTransform2dEffect); 731 } 732 733 mixin(uuid!(IDCompositionFilterEffect, "30C421D5-8CB2-4E9F-B133-37BE270D4AC2")); 734 /// An IDCompositionFilterEffect interface represents a filter effect 735 interface IDCompositionFilterEffect : IDCompositionEffect 736 { 737 extern(Windows): 738 /// Sets the input at the given index to the filterEffect (NULL will use source visual, unless flagged otherwise) 739 HRESULT SetInput(UINT index, IUnknown input, UINT flags); 740 } 741 742 mixin(uuid!(IDCompositionGaussianBlurEffect, "45D4D0B7-1BD4-454E-8894-2BFA68443033")); 743 /// An IDCompositionGaussianBlurEffect interface represents a gaussian blur filter effect 744 interface IDCompositionGaussianBlurEffect : IDCompositionFilterEffect 745 { 746 extern(Windows): 747 /// Changes the amount of blur to be applied. 748 HRESULT SetStandardDeviation(float amount); 749 HRESULT SetStandardDeviation(IDCompositionAnimation animation); 750 /// Changes border mode (see D2D1_GAUSSIANBLUR) 751 HRESULT SetBorderMode(D2D1_BORDER_MODE mode); 752 } 753 754 mixin(uuid!(IDCompositionBrightnessEffect, "6027496E-CB3A-49AB-934F-D798DA4F7DA6")); 755 /// An IDCompositionBrightnessEffect interface represents a brightness filter effect 756 interface IDCompositionBrightnessEffect : IDCompositionFilterEffect 757 { 758 extern(Windows): 759 /// Changes the value of white point property. 760 HRESULT SetWhitePoint(const(D2D1_VECTOR_2F)* whitePoint); 761 /// Changes the value of black point property 762 HRESULT SetBlackPoint(const(D2D1_VECTOR_2F)* blackPoint); 763 /// Changes the X value of the white point property. 764 HRESULT SetWhitePointX(float whitePointX); 765 HRESULT SetWhitePointX(IDCompositionAnimation animation); 766 /// Changes the Y value of the white point property. 767 HRESULT SetWhitePointY(float whitePointY); 768 HRESULT SetWhitePointY(IDCompositionAnimation animation); 769 /// Changes the X value of the black point property. 770 HRESULT SetBlackPointX(float blackPointX); 771 HRESULT SetBlackPointX(IDCompositionAnimation animation); 772 /// Changes the Y value of the black point property. 773 HRESULT SetBlackPointY(float blackPointY); 774 HRESULT SetBlackPointY(IDCompositionAnimation animation); 775 } 776 777 mixin(uuid!(IDCompositionColorMatrixEffect, "C1170A22-3CE2-4966-90D4-55408BFC84C4")); 778 /// An IDCompositionColorMatrixEffect interface represents a color matrix filter effect 779 interface IDCompositionColorMatrixEffect : IDCompositionFilterEffect 780 { 781 extern(Windows): 782 /// Changes all values of the matrix for a color transform 783 HRESULT SetMatrix(const(D2D1_MATRIX_5X4_F)* matrix); 784 /// Changes a single element of the matrix of this color transform. 785 HRESULT SetMatrixElement(int row, int column, float value); 786 /// Animates a single element of the matrix of this color transform. 787 HRESULT SetMatrixElement(int row, int column, IDCompositionAnimation animation); 788 /// Changes the alpha mode 789 HRESULT SetAlphaMode(D2D1_COLORMATRIX_ALPHA_MODE mode); 790 /// Sets the clamp output property 791 HRESULT SetClampOutput(BOOL clamp); 792 } 793 794 mixin(uuid!(IDCompositionShadowEffect, "4AD18AC0-CFD2-4C2F-BB62-96E54FDB6879")); 795 /// An IDCompositionShadowEffect interface represents a shadow filter effect 796 interface IDCompositionShadowEffect : IDCompositionFilterEffect 797 { 798 extern(Windows): 799 /// Changes the amount of blur to be applied. 800 HRESULT SetStandardDeviation(float amount); 801 HRESULT SetStandardDeviation(IDCompositionAnimation animation); 802 /// Changes shadow color 803 HRESULT SetColor(const(D2D1_VECTOR_4F)* color); 804 HRESULT SetRed(float amount); 805 HRESULT SetRed(IDCompositionAnimation animation); 806 HRESULT SetGreen(float amount); 807 HRESULT SetGreen(IDCompositionAnimation animation); 808 HRESULT SetBlue(float amount); 809 HRESULT SetBlue(IDCompositionAnimation animation); 810 HRESULT SetAlpha(float amount); 811 HRESULT SetAlpha(IDCompositionAnimation animation); 812 } 813 814 mixin(uuid!(IDCompositionHueRotationEffect, "6DB9F920-0770-4781-B0C6-381912F9D167")); 815 /// An IDCompositionHueRotationEffect interface represents a hue rotation filter effect 816 interface IDCompositionHueRotationEffect : IDCompositionFilterEffect 817 { 818 extern(Windows): 819 /// Changes the angle of rotation 820 HRESULT SetAngle(float amountDegrees); 821 HRESULT SetAngle(IDCompositionAnimation animation); 822 } 823 824 mixin(uuid!(IDCompositionSaturationEffect, "A08DEBDA-3258-4FA4-9F16-9174D3FE93B1")); 825 /// An IDCompositionSaturationEffect interface represents a saturation filter effect 826 interface IDCompositionSaturationEffect : IDCompositionFilterEffect 827 { 828 extern(Windows): 829 /// Changes the amount of saturation to be applied. 830 HRESULT SetSaturation(float ratio); 831 HRESULT SetSaturation(IDCompositionAnimation animation); 832 } 833 834 mixin(uuid!(IDCompositionTurbulenceEffect, "A6A55BDA-C09C-49F3-9193-A41922C89715")); 835 /// An IDCompositionTurbulenceEffect interface represents a turbulence filter effect 836 interface IDCompositionTurbulenceEffect : IDCompositionFilterEffect 837 { 838 extern(Windows): 839 /// Changes the starting offset of the turbulence 840 HRESULT SetOffset(const(D2D1_VECTOR_2F)* offset); 841 /// Changes the base frequency of the turbulence 842 HRESULT SetBaseFrequency(const(D2D1_VECTOR_2F)* frequency); 843 /// Changes the output size of the turbulence 844 HRESULT SetSize(const(D2D1_VECTOR_2F)* size); 845 /// Sets the number of octaves 846 HRESULT SetNumOctaves(UINT numOctaves); 847 /// Set the random number seed 848 HRESULT SetSeed(UINT seed); 849 /// Set the noise mode 850 HRESULT SetNoise(D2D1_TURBULENCE_NOISE noise); 851 /// Set stitchable 852 HRESULT SetStitchable(BOOL stitchable); 853 } 854 855 mixin(uuid!(IDCompositionLinearTransferEffect, "4305EE5B-C4A0-4C88-9385-67124E017683")); 856 /// An IDCompositionLinearTransferEffect interface represents a linear transfer filter effect 857 interface IDCompositionLinearTransferEffect : IDCompositionFilterEffect 858 { 859 extern(Windows): 860 HRESULT SetRedYIntercept(float redYIntercept); 861 HRESULT SetRedYIntercept(IDCompositionAnimation animation); 862 HRESULT SetRedSlope(float redSlope); 863 HRESULT SetRedSlope(IDCompositionAnimation animation); 864 HRESULT SetRedDisable(BOOL redDisable); 865 HRESULT SetGreenYIntercept(float greenYIntercept); 866 HRESULT SetGreenYIntercept(IDCompositionAnimation animation); 867 HRESULT SetGreenSlope(float greenSlope); 868 HRESULT SetGreenSlope(IDCompositionAnimation animation); 869 HRESULT SetGreenDisable(BOOL greenDisable); 870 HRESULT SetBlueYIntercept(float blueYIntercept); 871 HRESULT SetBlueYIntercept(IDCompositionAnimation animation); 872 HRESULT SetBlueSlope(float blueSlope); 873 HRESULT SetBlueSlope(IDCompositionAnimation animation); 874 HRESULT SetBlueDisable(BOOL blueDisable); 875 HRESULT SetAlphaYIntercept(float alphaYIntercept); 876 HRESULT SetAlphaYIntercept(IDCompositionAnimation animation); 877 HRESULT SetAlphaSlope(float alphaSlope); 878 HRESULT SetAlphaSlope(IDCompositionAnimation animation); 879 HRESULT SetAlphaDisable(BOOL alphaDisable); 880 HRESULT SetClampOutput(BOOL clampOutput); 881 } 882 883 mixin(uuid!(IDCompositionTableTransferEffect, "9B7E82E2-69C5-4EB4-A5F5-A7033F5132CD")); 884 /// An IDCompositionTableTransferEffect interface represents a Table transfer filter effect 885 interface IDCompositionTableTransferEffect : IDCompositionFilterEffect 886 { 887 extern(Windows): 888 HRESULT SetRedTable(const(float)* tableValues, UINT count); 889 HRESULT SetGreenTable(const(float)* tableValues, UINT count); 890 HRESULT SetBlueTable(const(float)* tableValues, UINT count); 891 HRESULT SetAlphaTable(const(float)* tableValues, UINT count); 892 HRESULT SetRedDisable(BOOL redDisable); 893 HRESULT SetGreenDisable(BOOL greenDisable); 894 HRESULT SetBlueDisable(BOOL blueDisable); 895 HRESULT SetAlphaDisable(BOOL alphaDisable); 896 HRESULT SetClampOutput(BOOL clampOutput); 897 /// Note: To set individual values, the table must have already been initialized 898 //// with a buffer of values of the appropriate size, or these calls will fail 899 HRESULT SetRedTableValue(UINT index, float value); 900 HRESULT SetRedTableValue(UINT index, IDCompositionAnimation animation); 901 HRESULT SetGreenTableValue(UINT index, float value); 902 HRESULT SetGreenTableValue(UINT index, IDCompositionAnimation animation); 903 HRESULT SetBlueTableValue(UINT index, float value); 904 HRESULT SetBlueTableValue(UINT index, IDCompositionAnimation animation); 905 HRESULT SetAlphaTableValue(UINT index, float value); 906 HRESULT SetAlphaTableValue(UINT index, IDCompositionAnimation animation); 907 } 908 909 mixin(uuid!(IDCompositionCompositeEffect, "576616C0-A231-494D-A38D-00FD5EC4DB46")); 910 /// An IDCompositionCompositeEffect interface represents a composite filter effect 911 interface IDCompositionCompositeEffect : IDCompositionFilterEffect 912 { 913 extern(Windows): 914 /// Changes the composite mode. 915 HRESULT SetMode(D2D1_COMPOSITE_MODE mode); 916 } 917 918 mixin(uuid!(IDCompositionBlendEffect, "33ECDC0A-578A-4A11-9C14-0CB90517F9C5")); 919 /// An IDCompositionBlendEffect interface represents a blend filter effect 920 interface IDCompositionBlendEffect : IDCompositionFilterEffect 921 { 922 extern(Windows): 923 HRESULT SetMode(D2D1_BLEND_MODE mode); 924 } 925 926 mixin(uuid!(IDCompositionArithmeticCompositeEffect, "3B67DFA8-E3DD-4E61-B640-46C2F3D739DC")); 927 /// An IDCompositionArithmeticCompositeEffect interface represents an arithmetic composite filter effect 928 interface IDCompositionArithmeticCompositeEffect : IDCompositionFilterEffect 929 { 930 extern(Windows): 931 HRESULT SetCoefficients(const(D2D1_VECTOR_4F)* coefficients); 932 HRESULT SetClampOutput(BOOL clampoutput); 933 HRESULT SetCoefficient1(float Coeffcient1); 934 HRESULT SetCoefficient1(IDCompositionAnimation animation); 935 HRESULT SetCoefficient2(float Coefficient2); 936 HRESULT SetCoefficient2(IDCompositionAnimation animation); 937 HRESULT SetCoefficient3(float Coefficient3); 938 HRESULT SetCoefficient3(IDCompositionAnimation animation); 939 HRESULT SetCoefficient4(float Coefficient4); 940 HRESULT SetCoefficient4(IDCompositionAnimation animation); 941 } 942 943 mixin(uuid!(IDCompositionAffineTransform2DEffect, "0B74B9E8-CDD6-492F-BBBC-5ED32157026D")); 944 /// An IDCompositionAffineTransform2DEffect interface represents a affine transform 2D filter effect 945 interface IDCompositionAffineTransform2DEffect : IDCompositionFilterEffect 946 { 947 extern(Windows): 948 HRESULT SetInterpolationMode(D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE interpolationMode); 949 HRESULT SetBorderMode(D2D1_BORDER_MODE borderMode); 950 HRESULT SetTransformMatrix(const(D2D1_MATRIX_3X2_F)* transformMatrix); 951 HRESULT SetTransformMatrixElement(int row, int column, float value); 952 HRESULT SetTransformMatrixElement(int row, int column, IDCompositionAnimation animation); 953 HRESULT SetSharpness(float sharpness); 954 HRESULT SetSharpness(IDCompositionAnimation animation); 955 }